/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package editor.impl;

import editor.Attribute;
import editor.ChoiceConnector;
import editor.Connector;
import editor.DefaultTypes;
import editor.Editor;
import editor.EditorFactory;
import editor.EditorPackage;
import editor.Element;
import editor.Node;
import editor.Occurrence;
import editor.Relationship;
import editor.Root;
import editor.RootRelationship;
import editor.SequenceConnector;
import editor.Use;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class EditorPackageImpl extends EPackageImpl implements EditorPackage {
	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass editorEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass rootEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass rootRelationshipEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass nodeEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass elementEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass attributeEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass connectorEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass sequenceConnectorEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass choiceConnectorEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EClass relationshipEClass = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EEnum occurrenceEEnum = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EEnum useEEnum = null;

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private EEnum defaultTypesEEnum = null;

	/**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see editor.EditorPackage#eNS_URI
   * @see #init()
   * @generated
   */
	private EditorPackageImpl() {
    super(eNS_URI, EditorFactory.eINSTANCE);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private static boolean isInited = false;

	/**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link EditorPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
	public static EditorPackage init() {
    if (isInited) return (EditorPackage)EPackage.Registry.INSTANCE.getEPackage(EditorPackage.eNS_URI);

    // Obtain or create and register package
    EditorPackageImpl theEditorPackage = (EditorPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof EditorPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new EditorPackageImpl());

    isInited = true;

    // Create package meta-data objects
    theEditorPackage.createPackageContents();

    // Initialize created meta-data
    theEditorPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theEditorPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(EditorPackage.eNS_URI, theEditorPackage);
    return theEditorPackage;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getEditor() {
    return editorEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getEditor_Nodes() {
    return (EReference)editorEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getEditor_Relationships() {
    return (EReference)editorEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getEditor_Root() {
    return (EReference)editorEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getEditor_RootRelationship() {
    return (EReference)editorEClass.getEStructuralFeatures().get(3);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getRoot() {
    return rootEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getRoot_Name() {
    return (EAttribute)rootEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getRoot_OutgoingRoot() {
    return (EReference)rootEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getRootRelationship() {
    return rootRelationshipEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getRootRelationship_SourceRoot() {
    return (EReference)rootRelationshipEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getRootRelationship_TargetRoot() {
    return (EReference)rootRelationshipEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getNode() {
    return nodeEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getNode_Name() {
    return (EAttribute)nodeEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getNode_IncomingNode() {
    return (EReference)nodeEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getNode_OutgoingNode() {
    return (EReference)nodeEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getElement() {
    return elementEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getElement_ElementType() {
    return (EAttribute)elementEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getElement_IncomingComplexElement() {
    return (EReference)elementEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getElement_Attributes() {
    return (EReference)elementEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getAttribute() {
    return attributeEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getAttribute_AttributeName() {
    return (EAttribute)attributeEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getAttribute_AttributeType() {
    return (EAttribute)attributeEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getAttribute_Use() {
    return (EAttribute)attributeEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getConnector() {
    return connectorEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getSequenceConnector() {
    return sequenceConnectorEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getChoiceConnector() {
    return choiceConnectorEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EClass getRelationship() {
    return relationshipEClass;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EAttribute getRelationship_Occurrence() {
    return (EAttribute)relationshipEClass.getEStructuralFeatures().get(0);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getRelationship_SourceRelationship() {
    return (EReference)relationshipEClass.getEStructuralFeatures().get(1);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EReference getRelationship_TargetRelationship() {
    return (EReference)relationshipEClass.getEStructuralFeatures().get(2);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EEnum getOccurrence() {
    return occurrenceEEnum;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EEnum getUse() {
    return useEEnum;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EEnum getDefaultTypes() {
    return defaultTypesEEnum;
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public EditorFactory getEditorFactory() {
    return (EditorFactory)getEFactoryInstance();
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private boolean isCreated = false;

	/**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public void createPackageContents() {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    editorEClass = createEClass(EDITOR);
    createEReference(editorEClass, EDITOR__NODES);
    createEReference(editorEClass, EDITOR__RELATIONSHIPS);
    createEReference(editorEClass, EDITOR__ROOT);
    createEReference(editorEClass, EDITOR__ROOT_RELATIONSHIP);

    rootEClass = createEClass(ROOT);
    createEAttribute(rootEClass, ROOT__NAME);
    createEReference(rootEClass, ROOT__OUTGOING_ROOT);

    rootRelationshipEClass = createEClass(ROOT_RELATIONSHIP);
    createEReference(rootRelationshipEClass, ROOT_RELATIONSHIP__SOURCE_ROOT);
    createEReference(rootRelationshipEClass, ROOT_RELATIONSHIP__TARGET_ROOT);

    nodeEClass = createEClass(NODE);
    createEAttribute(nodeEClass, NODE__NAME);
    createEReference(nodeEClass, NODE__INCOMING_NODE);
    createEReference(nodeEClass, NODE__OUTGOING_NODE);

    elementEClass = createEClass(ELEMENT);
    createEAttribute(elementEClass, ELEMENT__ELEMENT_TYPE);
    createEReference(elementEClass, ELEMENT__INCOMING_COMPLEX_ELEMENT);
    createEReference(elementEClass, ELEMENT__ATTRIBUTES);

    attributeEClass = createEClass(ATTRIBUTE);
    createEAttribute(attributeEClass, ATTRIBUTE__ATTRIBUTE_NAME);
    createEAttribute(attributeEClass, ATTRIBUTE__ATTRIBUTE_TYPE);
    createEAttribute(attributeEClass, ATTRIBUTE__USE);

    connectorEClass = createEClass(CONNECTOR);

    sequenceConnectorEClass = createEClass(SEQUENCE_CONNECTOR);

    choiceConnectorEClass = createEClass(CHOICE_CONNECTOR);

    relationshipEClass = createEClass(RELATIONSHIP);
    createEAttribute(relationshipEClass, RELATIONSHIP__OCCURRENCE);
    createEReference(relationshipEClass, RELATIONSHIP__SOURCE_RELATIONSHIP);
    createEReference(relationshipEClass, RELATIONSHIP__TARGET_RELATIONSHIP);

    // Create enums
    occurrenceEEnum = createEEnum(OCCURRENCE);
    useEEnum = createEEnum(USE);
    defaultTypesEEnum = createEEnum(DEFAULT_TYPES);
  }

	/**
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	private boolean isInitialized = false;

	/**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	public void initializePackageContents() {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    elementEClass.getESuperTypes().add(this.getNode());
    connectorEClass.getESuperTypes().add(this.getNode());
    sequenceConnectorEClass.getESuperTypes().add(this.getConnector());
    choiceConnectorEClass.getESuperTypes().add(this.getConnector());

    // Initialize classes and features; add operations and parameters
    initEClass(editorEClass, Editor.class, "Editor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getEditor_Nodes(), this.getNode(), null, "nodes", null, 0, -1, Editor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getEditor_Relationships(), this.getRelationship(), null, "relationships", null, 0, -1, Editor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getEditor_Root(), this.getRoot(), null, "root", null, 1, 1, Editor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getEditor_RootRelationship(), this.getRootRelationship(), null, "rootRelationship", null, 1, 1, Editor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(rootEClass, Root.class, "Root", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRoot_Name(), ecorePackage.getEString(), "name", null, 1, 1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRoot_OutgoingRoot(), this.getRootRelationship(), this.getRootRelationship_SourceRoot(), "outgoingRoot", null, 1, 1, Root.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(rootRelationshipEClass, RootRelationship.class, "RootRelationship", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRootRelationship_SourceRoot(), this.getRoot(), this.getRoot_OutgoingRoot(), "sourceRoot", null, 1, 1, RootRelationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRootRelationship_TargetRoot(), this.getElement(), this.getElement_IncomingComplexElement(), "targetRoot", null, 1, 1, RootRelationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(nodeEClass, Node.class, "Node", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getNode_Name(), ecorePackage.getEString(), "name", null, 1, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_IncomingNode(), this.getRelationship(), this.getRelationship_TargetRelationship(), "incomingNode", null, 1, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getNode_OutgoingNode(), this.getRelationship(), this.getRelationship_SourceRelationship(), "outgoingNode", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(elementEClass, Element.class, "Element", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getElement_ElementType(), this.getDefaultTypes(), "elementType", null, 1, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getElement_IncomingComplexElement(), this.getRootRelationship(), this.getRootRelationship_TargetRoot(), "incomingComplexElement", null, 1, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getElement_Attributes(), this.getAttribute(), null, "attributes", null, 0, -1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attributeEClass, Attribute.class, "Attribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getAttribute_AttributeName(), ecorePackage.getEString(), "attributeName", null, 1, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getAttribute_AttributeType(), this.getDefaultTypes(), "attributeType", null, 1, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getAttribute_Use(), this.getUse(), "use", null, 1, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(connectorEClass, Connector.class, "Connector", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(sequenceConnectorEClass, SequenceConnector.class, "SequenceConnector", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(choiceConnectorEClass, ChoiceConnector.class, "ChoiceConnector", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(relationshipEClass, Relationship.class, "Relationship", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRelationship_Occurrence(), this.getOccurrence(), "occurrence", null, 1, 1, Relationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRelationship_SourceRelationship(), this.getNode(), this.getNode_OutgoingNode(), "sourceRelationship", null, 1, 1, Relationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRelationship_TargetRelationship(), this.getNode(), this.getNode_IncomingNode(), "targetRelationship", null, 1, 1, Relationship.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    // Initialize enums and add enum literals
    initEEnum(occurrenceEEnum, Occurrence.class, "Occurrence");
    addEEnumLiteral(occurrenceEEnum, Occurrence.ONE_AND_ONLY_ONE);
    addEEnumLiteral(occurrenceEEnum, Occurrence.NONE_OR_ONE);
    addEEnumLiteral(occurrenceEEnum, Occurrence.NONE_ONE_OR_MORE);
    addEEnumLiteral(occurrenceEEnum, Occurrence.ONE_OR_MORE);

    initEEnum(useEEnum, Use.class, "Use");
    addEEnumLiteral(useEEnum, Use.REQUIRED);
    addEEnumLiteral(useEEnum, Use.OPTIONAL);

    initEEnum(defaultTypesEEnum, DefaultTypes.class, "DefaultTypes");
    addEEnumLiteral(defaultTypesEEnum, DefaultTypes.NONE);
    addEEnumLiteral(defaultTypesEEnum, DefaultTypes.STRING);
    addEEnumLiteral(defaultTypesEEnum, DefaultTypes.INTEGER);
    addEEnumLiteral(defaultTypesEEnum, DefaultTypes.BOOLEAN);
    addEEnumLiteral(defaultTypesEEnum, DefaultTypes.DECIMAL);
    addEEnumLiteral(defaultTypesEEnum, DefaultTypes.DATE);
    addEEnumLiteral(defaultTypesEEnum, DefaultTypes.TIME);

    // Create resource
    createResource(eNS_URI);

    // Create annotations
    // gmf.diagram
    createGmfAnnotations();
    // gmf.node
    createGmf_1Annotations();
    // gmf.link
    createGmf_2Annotations();
    // gmf.compartment
    createGmf_3Annotations();
  }

	/**
   * Initializes the annotations for <b>gmf.diagram</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmfAnnotations() {
    String source = "gmf.diagram";		
    addAnnotation
      (editorEClass, 
       source, 
       new String[] 
       {
       "foo", "bar"
       });									
  }

	/**
   * Initializes the annotations for <b>gmf.node</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmf_1Annotations() {
    String source = "gmf.node";			
    addAnnotation
      (rootEClass, 
       source, 
       new String[] 
       {
       "label", "name",
       "label.readOnly", "true",
       "color", "153,85,51",
       "tool.small.bundle", "br.ufpe.cin.jfsr.tg.editor.edit",
       "tool.small.path", "icons/full/obj16/Root.gif"
       });			
    addAnnotation
      (nodeEClass, 
       source, 
       new String[] 
       {
       "label", "name"
       });		
    addAnnotation
      (elementEClass, 
       source, 
       new String[] 
       {
       "label", "name, elementType",
       "figure", "rounded",
       "label.pattern", "{0} : {1}",
       "color", "204,213,204",
       "tool.name", "Element",
       "tool.small.bundle", "br.ufpe.cin.jfsr.tg.editor.edit",
       "tool.small.path", "icons/full/obj16/Element.gif"
       });			
    addAnnotation
      (attributeEClass, 
       source, 
       new String[] 
       {
       "label", "attributeName,attributeType,use",
       "figure", "rounded",
       "label.icon", "false",
       "label.pattern", "{0} : {1} - {2}",
       "tool.small.bundle", "br.ufpe.cin.jfsr.tg.editor.edit",
       "tool.small.path", "icons/full/obj16/Attribute.gif"
       });		
    addAnnotation
      (sequenceConnectorEClass, 
       source, 
       new String[] 
       {
       "label.readOnly", "true",
       "color", "102,128,204",
       "tool.name", "Sequence",
       "tool.small.bundle", "br.ufpe.cin.jfsr.tg.editor.edit",
       "tool.small.path", "icons/full/obj16/SequenceConnector.gif"
       });		
    addAnnotation
      (choiceConnectorEClass, 
       source, 
       new String[] 
       {
       "label.readOnly", "true",
       "color", "102,128,204",
       "tool.name", "Choice",
       "tool.small.bundle", "br.ufpe.cin.jfsr.tg.editor.edit",
       "tool.small.path", "icons/full/obj16/ChoiceConnector.gif"
       });	
  }

	/**
   * Initializes the annotations for <b>gmf.link</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmf_2Annotations() {
    String source = "gmf.link";				
    addAnnotation
      (rootRelationshipEClass, 
       source, 
       new String[] 
       {
       "source", "sourceRoot",
       "target", "targetRoot",
       "target.decoration", "arrow",
       "style", "dash"
       });								
    addAnnotation
      (relationshipEClass, 
       source, 
       new String[] 
       {
       "label", "occurrence",
       "style", "solid",
       "label.readOnly", "true",
       "source", "sourceRelationship",
       "target", "targetRelationship",
       "target.decoration", "arrow"
       });
  }

	/**
   * Initializes the annotations for <b>gmf.compartment</b>.
   * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
   * @generated
   */
	protected void createGmf_3Annotations() {
    String source = "gmf.compartment";							
    addAnnotation
      (getElement_Attributes(), 
       source, 
       new String[] 
       {
       "layout", "list",
       "collapsible", "false"
       });				
  }

} //EditorPackageImpl
